<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script>
      function fun() {
        alert("我是函数");
      }

      /**
       * call()和apply()
       * 这两个方法都是函数对象的方法，需要通过函数对象来调用
       * 当对函数调用call()和apply()都会调用函数执行
       * 调用call()和apply()可以将第一个对象指定为第一个参数
       *   此时这个对象将会成为函数执行时的this
       * call（）方法可以将实参在对象之后依次传递
       * apply（）方法需要将实参封装到一个数组中统一传递
       *
       * this的情况
       *   1.以函数形式调用时，this永远都是window
       *   2.以方法的形式调用，this是调用方法的对象
       *   3.以构造函数形式调用时，this是新创建的那个对象
       *   4.使用call和apply调用时，this是指定的那个对象
       */
      fun.call();
    </script>
  </head>
  <body></body>
</html>
